﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace Opet
{
    public class SatisSarti
    {
        public string Seri { get; set; }
        public int Sira { get; set; }
        public int Satir { get; set; }
        public string StokKodu { get; set; }
        public string CariKodu { get; set; }
        public DateTime Tarih { get; set; }
        public string BelgeNo { get; set; }
        public DateTime BaslangicTarihi { get; set; }
        public DateTime BitisTarihi { get; set; }
        public decimal BurutFiyat { get; set; }
        public decimal Iskonto1 { get; set; }
        public decimal Iskonto2 { get; set; }
        public decimal Iskonto3 { get; set; }
        public decimal Iskonto4 { get; set; }
        public decimal Iskonto5 { get; set; }
        public decimal Iskonto6 { get; set; }
        public decimal Miktar1 { get; set; }
        public decimal Miktar2 { get; set; }
        public decimal Miktar3 { get; set; }
        public decimal Miktar4 { get; set; }
        public decimal Miktar5 { get; set; }
        public decimal Miktar6 { get; set; }
        public int OdemePlani { get; set; }
        public int DovizCinsi { get; set; }
        public int DepoNo { get; set; }
        public int FiyatNo { get; set; }
    }
    public class Mikro
    {

        private string CnnString;
        public Mikro()
        {
            CnnString = string.Format("Data Source={0};User Id={1};Password={2};Database={3}", Program.Session[Settings.ServerName], Program.Session[Settings.UserName], Program.Session[Settings.Password], Program.Session[Settings.DatabaseName]);
        }

        public void SatisSartiEkle(SatisSarti[] lines)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("if exists(select sat_RECno from SATIS_SARTLARI where sat_evrakno_seri=@sat_evrakno_seri and sat_evrakno_sira=@sat_evrakno_sira and sat_satirno=@sat_satirno )");
            sb.Append("update SATIS_SARTLARI set sat_SpecRECno=0,sat_iptal=0,sat_fileid=45,sat_hidden=0,sat_kilitli=0,sat_degisti=0,sat_checksum=0,sat_create_user=1,sat_create_date=@crdate,sat_lastup_user=1,sat_lastup_date=@crdate,sat_special1='',sat_special2='',sat_special3='',sat_stok_kod=@sat_stok_kod,sat_cari_kod=@sat_cari_kod,sat_evrak_tarih=@sat_evrak_tarih,sat_belgeno=@sat_belgeno,sat_belge_tarih=@sat_belge_tarih,sat_asgari_miktar=0,sat_teslimat_sure=0,sat_basla_tarih=@sat_basla_tarih,sat_bitis_tarih=@sat_bitis_tarih,sat_brut_fiyat=@sat_brut_fiyat,sat_det_isk_acik1='Iskonto 1',sat_det_isk_uyg1=0,sat_det_isk_durum1=0,sat_det_isk_vergi1=0,sat_det_isk_kriter1=0,sat_det_isk_yuzde1=@sat_det_isk_yuzde1,sat_det_isk_miktar1=@sat_det_isk_miktar1,sat_det_isk_acik2='Iskonto 2',sat_det_isk_uyg2=1,sat_det_isk_durum2=0,sat_det_isk_vergi2=0,sat_det_isk_kriter2=0,sat_det_isk_yuzde2=@sat_det_isk_yuzde2,sat_det_isk_miktar2=@sat_det_isk_miktar2,sat_det_isk_acik3='Iskonto 3',sat_det_isk_uyg3=1,sat_det_isk_durum3=0,sat_det_isk_vergi3=0,sat_det_isk_kriter3=0,sat_det_isk_yuzde3=@sat_det_isk_yuzde3,sat_det_isk_miktar3=@sat_det_isk_miktar4,sat_det_isk_acik4='Iskonto 4',sat_det_isk_uyg4=1,sat_det_isk_durum4=0,sat_det_isk_vergi4=0,sat_det_isk_kriter4=0,sat_det_isk_yuzde4=@sat_det_isk_yuzde4,sat_det_isk_miktar4=@sat_det_isk_miktar4,sat_det_isk_acik5='Iskonto 5',sat_det_isk_uyg5=1,sat_det_isk_durum5=0,sat_det_isk_vergi5=0,sat_det_isk_kriter5=0,sat_det_isk_yuzde5=@sat_det_isk_yuzde5,sat_det_isk_miktar5=@sat_det_isk_miktar5,sat_det_isk_acik6='Iskonto 6',sat_det_isk_uyg6=1,sat_det_isk_durum6=0,sat_det_isk_vergi6=0,sat_det_isk_kriter6=0,sat_det_isk_yuzde6=@sat_det_isk_yuzde6,sat_det_isk_miktar6=@sat_det_isk_miktar6,sat_det_mas_acik1='Masraf 1',sat_det_mas_uyg1=1,sat_det_mas_durum1=0,sas_det_mas_vergi1=0,sat_det_mas_kriter1=0,sat_det_mas_yuzde1=0,sat_det_mas_miktar1=0,sat_det_mas_acik2='Masraf 2',sat_det_mas_uyg2=1,sat_det_mas_durum2=0,sas_det_mas_vergi2=0,sat_det_mas_kriter2=0,sat_det_mas_yuzde2=0,sat_det_mas_miktar2=0,sat_det_mas_acik3='Masraf 3',sat_det_mas_uyg3=1,sat_det_mas_durum3=0,sas_det_mas_vergi3=0,sat_det_mas_kriter3=0,sat_det_mas_yuzde3=0,sat_det_mas_miktar3=0,sat_det_mas_acik4='Masraf 4',sat_det_mas_uyg4=1,sat_det_mas_durum4=0,sas_det_mas_vergi4=0,sat_det_mas_kriter4=0,sat_det_mas_yuzde4=0,sat_det_mas_miktar4=0,sat_odeme_plan=@sat_odeme_plan,sat_doviz_cinsi=@sat_doviz_cinsi,sat_depo_no=@sat_depo_no,sat_fiyat_liste_no=@sat_fiyat_liste_no where sat_evrakno_seri=@sat_evrakno_seri and sat_evrakno_sira=@sat_evrakno_sira and sat_satirno=@sat_satirno  else ");
            sb.Append("insert into SATIS_SARTLARI (sat_RECid_DBCno,sat_RECid_RECno,sat_SpecRECno,sat_iptal,sat_fileid,sat_hidden,sat_kilitli,sat_degisti,sat_checksum,sat_create_user,sat_create_date,sat_lastup_user,sat_lastup_date,sat_special1,sat_special2,sat_special3,sat_stok_kod,sat_cari_kod,sat_evrakno_seri,sat_evrakno_sira,sat_evrak_tarih,sat_satirno,sat_belgeno,sat_belge_tarih,sat_asgari_miktar,sat_teslimat_sure,sat_basla_tarih,sat_bitis_tarih,sat_brut_fiyat,sat_det_isk_acik1,sat_det_isk_uyg1,sat_det_isk_durum1,sat_det_isk_vergi1,sat_det_isk_kriter1,sat_det_isk_yuzde1,sat_det_isk_miktar1,sat_det_isk_acik2,sat_det_isk_uyg2,sat_det_isk_durum2,sat_det_isk_vergi2,sat_det_isk_kriter2,sat_det_isk_yuzde2,sat_det_isk_miktar2,sat_det_isk_acik3,sat_det_isk_uyg3,sat_det_isk_durum3,sat_det_isk_vergi3,sat_det_isk_kriter3,sat_det_isk_yuzde3,sat_det_isk_miktar3,sat_det_isk_acik4,sat_det_isk_uyg4,sat_det_isk_durum4,sat_det_isk_vergi4,sat_det_isk_kriter4,sat_det_isk_yuzde4,sat_det_isk_miktar4,sat_det_isk_acik5,sat_det_isk_uyg5,sat_det_isk_durum5,sat_det_isk_vergi5,sat_det_isk_kriter5,sat_det_isk_yuzde5,sat_det_isk_miktar5,sat_det_isk_acik6,sat_det_isk_uyg6,sat_det_isk_durum6,sat_det_isk_vergi6,sat_det_isk_kriter6,sat_det_isk_yuzde6,sat_det_isk_miktar6,sat_det_mas_acik1,sat_det_mas_uyg1,sat_det_mas_durum1,sas_det_mas_vergi1,sat_det_mas_kriter1,sat_det_mas_yuzde1,sat_det_mas_miktar1,sat_det_mas_acik2,sat_det_mas_uyg2,sat_det_mas_durum2,sas_det_mas_vergi2,sat_det_mas_kriter2,sat_det_mas_yuzde2,sat_det_mas_miktar2,sat_det_mas_acik3,sat_det_mas_uyg3,sat_det_mas_durum3,sas_det_mas_vergi3,sat_det_mas_kriter3,sat_det_mas_yuzde3,sat_det_mas_miktar3,sat_det_mas_acik4,sat_det_mas_uyg4,sat_det_mas_durum4,sas_det_mas_vergi4,sat_det_mas_kriter4,sat_det_mas_yuzde4,sat_det_mas_miktar4,sat_odeme_plan,sat_doviz_cinsi,sat_depo_no,sat_fiyat_liste_no) values (0,-1,0,0,45,0,0,0,0,1,@crdate,1,@crdate,'','','',@sat_stok_kod,@sat_cari_kod,@sat_evrakno_seri,@sat_evrakno_sira,@sat_evrak_tarih,@sat_satirno,@sat_belgeno,@sat_belge_tarih,0,0,@sat_basla_tarih,@sat_bitis_tarih,@sat_brut_fiyat,'Iskonto 1',0,0,0,0,@sat_det_isk_yuzde1,@sat_det_isk_miktar1,'Iskonto 2',1,0,0,0,@sat_det_isk_yuzde2,@sat_det_isk_miktar2,'Iskonto 3',1,0,0,0,@sat_det_isk_yuzde3,@sat_det_isk_miktar3,'Iskonto 4',1,0,0,0,@sat_det_isk_yuzde4,@sat_det_isk_miktar4,'Iskonto 5',1,0,0,0,@sat_det_isk_yuzde5,@sat_det_isk_miktar5,'Iskonto 6',1,0,0,0,@sat_det_isk_yuzde6,@sat_det_isk_miktar6,'Masraf 1',1,0,0,0,0,0,'Masraf 2',1,0,0,0,0,0,'Masraf 3',1,0,0,0,0,0,'Masraf 4',1,0,0,0,0,0,@sat_odeme_plan,@sat_doviz_cinsi,@sat_depo_no,@sat_fiyat_liste_no) ");
            sb.Append(";update SATIS_SARTLARI set sat_RECid_RECno=sat_RECno where sat_RECid_RECno=-1");
            using (SqlConnection cn = new SqlConnection(CnnString))
            {
                cn.Open();
                using (SqlCommand cmd = new SqlCommand(sb.ToString(), cn))
                {
                    cmd.Parameters.Add("@sat_evrakno_seri", SqlDbType.VarChar);
                    cmd.Parameters.Add("@sat_evrakno_sira", SqlDbType.VarChar);
                    cmd.Parameters.Add("@sat_satirno", SqlDbType.Int);
                    cmd.Parameters.Add("@sat_stok_kod", SqlDbType.VarChar);
                    cmd.Parameters.Add("@sat_cari_kod", SqlDbType.VarChar);
                    cmd.Parameters.Add("@sat_evrak_tarih", SqlDbType.DateTime);
                    cmd.Parameters.Add("@sat_belgeno", SqlDbType.VarChar);
                    cmd.Parameters.Add("@sat_belge_tarih", SqlDbType.DateTime);
                    cmd.Parameters.Add("@sat_basla_tarih", SqlDbType.DateTime);
                    cmd.Parameters.Add("@sat_bitis_tarih", SqlDbType.DateTime);
                    cmd.Parameters.Add("@crdate", SqlDbType.DateTime);
                    cmd.Parameters.Add("@sat_brut_fiyat", SqlDbType.Float);
                    cmd.Parameters.Add("@sat_det_isk_yuzde1", SqlDbType.Float);
                    cmd.Parameters.Add("@sat_det_isk_yuzde2", SqlDbType.Float);
                    cmd.Parameters.Add("@sat_det_isk_yuzde3", SqlDbType.Float);
                    cmd.Parameters.Add("@sat_det_isk_yuzde4", SqlDbType.Float);
                    cmd.Parameters.Add("@sat_det_isk_yuzde5", SqlDbType.Float);
                    cmd.Parameters.Add("@sat_det_isk_yuzde6", SqlDbType.Float);
                    cmd.Parameters.Add("@sat_det_isk_miktar1", SqlDbType.Float);
                    cmd.Parameters.Add("@sat_det_isk_miktar2", SqlDbType.Float);
                    cmd.Parameters.Add("@sat_det_isk_miktar3", SqlDbType.Float);
                    cmd.Parameters.Add("@sat_det_isk_miktar4", SqlDbType.Float);
                    cmd.Parameters.Add("@sat_det_isk_miktar5", SqlDbType.Float);
                    cmd.Parameters.Add("@sat_det_isk_miktar6", SqlDbType.Float);
                    cmd.Parameters.Add("@sat_odeme_plan", SqlDbType.Int);
                    cmd.Parameters.Add("@sat_doviz_cinsi", SqlDbType.TinyInt);
                    cmd.Parameters.Add("@sat_depo_no", SqlDbType.Int);
                    cmd.Parameters.Add("@sat_fiyat_liste_no", SqlDbType.Int);
                    cmd.Parameters["@crdate"].Value = DateTime.Now;

                    MiktarHesapla(ref lines);
                    foreach (SatisSarti satir in lines)
                    {
                        cmd.Parameters["@sat_evrakno_seri"].Value = satir.Seri;
                        cmd.Parameters["@sat_evrakno_sira"].Value = satir.Sira;
                        cmd.Parameters["@sat_satirno"].Value = satir.Satir;
                        cmd.Parameters["@sat_stok_kod"].Value = satir.StokKodu;
                        cmd.Parameters["@sat_cari_kod"].Value = satir.CariKodu;
                        cmd.Parameters["@sat_evrak_tarih"].Value = satir.Tarih;
                        cmd.Parameters["@sat_belgeno"].Value = satir.BelgeNo;
                        cmd.Parameters["@sat_belge_tarih"].Value = satir.Tarih;
                        cmd.Parameters["@sat_basla_tarih"].Value = satir.BaslangicTarihi;
                        cmd.Parameters["@sat_bitis_tarih"].Value = satir.BitisTarihi;
                        cmd.Parameters["@sat_brut_fiyat"].Value = satir.BurutFiyat;
                        cmd.Parameters["@sat_det_isk_yuzde1"].Value = satir.Iskonto1;
                        cmd.Parameters["@sat_det_isk_yuzde2"].Value = satir.Iskonto2;
                        cmd.Parameters["@sat_det_isk_yuzde3"].Value = satir.Iskonto3;
                        cmd.Parameters["@sat_det_isk_yuzde4"].Value = satir.Iskonto4;
                        cmd.Parameters["@sat_det_isk_yuzde5"].Value = satir.Iskonto5;
                        cmd.Parameters["@sat_det_isk_yuzde6"].Value = satir.Iskonto6;
                        cmd.Parameters["@sat_det_isk_miktar1"].Value = satir.Miktar1;
                        cmd.Parameters["@sat_det_isk_miktar2"].Value = satir.Miktar2;
                        cmd.Parameters["@sat_det_isk_miktar3"].Value = satir.Miktar3;
                        cmd.Parameters["@sat_det_isk_miktar4"].Value = satir.Miktar4;
                        cmd.Parameters["@sat_det_isk_miktar5"].Value = satir.Miktar5;
                        cmd.Parameters["@sat_det_isk_miktar6"].Value = satir.Miktar6;
                        cmd.Parameters["@sat_odeme_plan"].Value = satir.OdemePlani;
                        cmd.Parameters["@sat_doviz_cinsi"].Value = satir.DovizCinsi;
                        cmd.Parameters["@sat_depo_no"].Value = satir.DepoNo;
                        cmd.Parameters["@sat_fiyat_liste_no"].Value = satir.FiyatNo;
                        cmd.ExecuteNonQuery();
                    }

                }
                cn.Close();
            }
        }
        private void MiktarHesapla(ref SatisSarti[] lines)
        {
            foreach (SatisSarti sart in lines)
            {
                sart.Miktar1 = sart.BurutFiyat / 100 * sart.Iskonto1;
                if (sart.Iskonto2 > 0)
                    sart.Miktar2 = (sart.BurutFiyat - sart.Miktar1) / 100 * sart.Iskonto2;
                if (sart.Iskonto3 > 0)
                    sart.Miktar3 = (sart.BurutFiyat - sart.Miktar1 - sart.Miktar2) / 100 * sart.Iskonto3;
                if (sart.Iskonto4 > 0)
                    sart.Miktar4 = (sart.BurutFiyat - sart.Miktar1 - sart.Miktar2 - sart.Miktar3) / 100 * sart.Iskonto4;
                if (sart.Iskonto5 > 0)
                    sart.Miktar5 = (sart.BurutFiyat - sart.Miktar1 - sart.Miktar2 - sart.Miktar3 - sart.Miktar4) / 100 * sart.Iskonto5;
                if (sart.Iskonto6 > 0)
                    sart.Miktar6 = (sart.BurutFiyat - sart.Miktar1 - sart.Miktar2 - sart.Miktar3 - sart.Miktar4 - sart.Miktar5) / 100 * sart.Iskonto6;
            }
        }
    }

    public class Product
    {
        public string Kod { get; set; }
        public string Adi { get; set; }
        public decimal GelirPayi { get; set; }
    }

    public class Customer
    {
        public string Kodu { get; set; }
        public string Adi { get; set; }
        public decimal HalKomisyon { get; set; }
        public string BolgeKodu { get; set; }
    }
}
